home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
C/C++ Users Group Library 1996 July
/
C-C++ Users Group Library July 1996.iso
/
listings
/
v_11_06
/
1106097a
< prev
next >
Wrap
Text File
|
1993-04-06
|
6KB
|
184 lines
/***********************************************
*
* file d:\cips\main2seg.c
*
* Functions: This file contains
* main
*
* Purpose:
* This is a calling program that calls
* the three new segmentation techniques
* discussed in Image Processing part 10.
*
* External Calls:
* gin.c - get_image_name
* numcvrt.c - get_integer
* int_convert
* tiff.c - read_tiff_header
* segment2.c - edge_region
* gray_shade_region
* edge_gray_shade_region
*
* Modifications:
* 5 December 1992 - created
*
***********************************************/
#include "cips.h"
short the_image[ROWS][COLS];
short out_image[ROWS][COLS];
main(argc, argv)
int argc;
char *argv[];
{
char name[80], name2[80], low_high[80], type[80];
float percent;
int count, i, ie, il, j, le, length, ll,
looking = 1, lw, width;
short value, value2, value3,
value4, value5, value6;
struct tiff_header_struct image_header;
_setvideomode(_TEXTC80); /* MSC 6.0 statements */
_setbkcolor(1);
_settextcolor(7);
_clearscreen(_GCLEARSCREEN);
/***********************************************
*
* Interpret the command line parameters.
*
************************************************/
if(argc < 4){
printf(
"\n\nNot enough parameters:"
"\n"
"\n usage: main2seg in-file out-file type"
" [values ...]"
"\n"
"\n recall type: Edge-region edge-gray-grow (C)"
" Gray-shade-grow"
"\n"
"\n main2seg in-file out-file R percent "
"edge-type "
"\n min-area max-area diff set-value erode"
"\n main2seg in-file out-file E percent "
"edge-type "
"\n min-area max-area diff set-value erode"
"\n main2seg in-file out-file G diff "
"min-area max-area"
"\n"
"\n");
exit(0);
}
strcpy(name, argv[1]);
strcpy(name2, argv[2]);
strcpy(type, argv[3]);
if(type[0] == 'a' || type[0] == 'A' ||
type[0] == 'c' || type[0] == 'C' ||
type[0] == 'e' || type[0] == 'E'){
percent = atof(argv[4]);
value = atoi(argv[5]);
value2 = atoi(argv[6]);
value3 = atoi(argv[7]);
value4 = atoi(argv[8]);
value5 = atoi(argv[9]);
value6 = atoi(argv[10]);
}
else{
value = atoi(argv[4]);
value2 = atoi(argv[5]);
value3 = atoi(argv[6]);
}
il = 1;
ie = 1;
ll = ROWS+1;
le = COLS+1;
/******************************************
*
* Read the input image header and setup
* the looping counters.
*
*******************************************/
read_tiff_header(name, &image_header);
length = (90 + image_header.image_length)/ROWS;
width = (90 + image_header.image_width)/COLS;
count = 1;
lw = length*width;
printf("\nlength=%d width=%d", length, width);
/********************************
*
* Edge only segmentation
*
*********************************/
if(type[0] == 'e' || type[0] == 'E'){
for(i=0; i<length; i++){
for(j=0; j<width; j++){
printf("\nrunning %d of %d", count, lw);
count++;
edge_region(name, name2, the_image,
out_image, il+i*ROWS,
ie+j*COLS, ll+i*ROWS,
le+j*COLS, value, value2,
value3, value4, percent,
value5, value6);
} /* ends loop over j */
} /* ends loop over i */
} /* ends edge_region */
/********************************
*
* Gray Shade only segmentation
*
*********************************/
if(type[0] == 'g' || type[0] == 'G'){
for(i=0; i<length; i++){
for(j=0; j<width; j++){
printf("\nrunning %d of %d", count, lw);
count++;
gray_shade_region(name, name2, the_image,
out_image, il+i*ROWS,
ie+j*COLS, ll+i*ROWS,
le+j*COLS, value,
value2, value3);
} /* ends loop over j */
} /* ends loop over i */
} /* ends gray_shade_region */
/**********************************
*
* Edge and Gray Shade segmentation
*
***********************************/
if(type[0] == 'c' || type[0] == 'C'){
for(i=0; i<length; i++){
for(j=0; j<width; j++){
printf("\nrunning %d of %d", count, lw);
count++;
edge_gray_shade_region(name, name2,
the_image, out_image, il+i*ROWS,
ie+j*COLS, ll+i*ROWS, le+j*COLS,
value, value2, value3, value4,
percent, value5, value6);
} /* ends loop over j */
} /* ends loop over i */
} /* ends edge_gray_shade_region */
} /* ends main */